package com.turbo.cloud.ums.web.service.impl;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.turbo.cloud.core.base.PageQuery;
import com.turbo.cloud.ums.web.entity.UmsSystem;
import com.turbo.cloud.ums.web.mapper.UmsSystemMapper;
import com.turbo.cloud.ums.web.model.system.UmsSystemQo;
import com.turbo.cloud.ums.web.service.IUmsSystemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.Objects;

/**
 * <p>
 * 系统信息表 服务实现类
 * </p>
 *
 * @author zhangluning
 * @since 2022-10-11
 */
@RequiredArgsConstructor
@Service
public class UmsSystemServiceImpl extends ServiceImpl<UmsSystemMapper, UmsSystem> implements IUmsSystemService {

    final UmsSystemMapper umsSystemMapper;

    /**
     * 模糊查询系统产品分页列表
     *
     * @param pageQuery 分页实体
     * @return 分页数据
     */
    @Override
    public Page<UmsSystem> querySystemPageByLike(PageQuery<UmsSystemQo> pageQuery) {
        /*
         * 取出查询条件
         */
        UmsSystemQo umsSystemQo = new UmsSystemQo();
        if (Objects.nonNull(pageQuery) && Objects.nonNull(pageQuery.getParam())) {
            umsSystemQo = pageQuery.getParam();
        }
        /*
         * 模糊查询条件
         */
        LambdaQueryWrapper<UmsSystem> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(StrUtil.isNotBlank(umsSystemQo.getSystemNameByLike()), UmsSystem::getSystemName, umsSystemQo.getSystemNameByLike()).or().like(StrUtil.isNotBlank(umsSystemQo.getSystemNameByLike()), UmsSystem::getSystemCode, umsSystemQo.getSystemNameByLike());
        queryWrapper.like(StrUtil.isNotBlank(umsSystemQo.getSystemCodeByLike()), UmsSystem::getSystemCode, umsSystemQo.getSystemCodeByLike());

        /*
         * PageQuery转换Page
         */
        Page<UmsSystem> pageQueryTmp = new Page<>();
        BeanUtils.copyProperties(pageQuery, pageQueryTmp);

        Page<UmsSystem> pageResult = umsSystemMapper.selectPage(pageQueryTmp, queryWrapper);
        return pageResult;
    }
}
